﻿#ifndef WRWORKTCPCOMMSERVER_H
#define WRWORKTCPCOMMSERVER_H

#include <QEvent>
#include <QTcpServer>
#include "../WRWorkTcpCommService.h"
#include "../../WRSoft-Utility/WRSocket.h"

//声明TCP通讯服务器会话类。
class WRWorkTcpCommServerSocket;

//表示工作TCP通讯服务器。
class WRWorkTcpCommServer : public QTcpServer
{
    Q_OBJECT

private:
    //所有者。
    WRWorkTcpCommService* m_owner;
    //定时器。
    int m_timer;
    //客户端集合。
    QList<WRWorkTcpCommServerSocket*> m_sockets;

protected:
    //当有新连接后调用此方法。
    void incomingConnection(WRSocketDescriptor handle);
    //处理定时器事件。
    void timerEvent(QTimerEvent *e);

public:
    //初始化工作TCP通讯服务器。
    WRWorkTcpCommServer();
    //清理当前对象所占用的相关资源。
    ~WRWorkTcpCommServer();

    //获取所有者。
    inline WRWorkTcpCommService* owner(void) const
    {
        return m_owner;
    }
    //获取时间戳。
    inline WRDateTime timestamp(void) const
    {
        return m_owner->timestamp();
    }
    //获取对象集合。
    inline const WRArray<WRWorkTcpCommServerObjRef*>& objects(void) const
    {
        return m_owner->objects();
    }

    //执行事件处理。
    bool event(QEvent *);
};

#endif // WRWORKTCPCOMMSERVER_H
